home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / c64-preservation-project / educational / intro_to_basic_part_2[commodore_1983].nbz / planets (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  4.2 KB  |  112 lines

  1. 5 REM PLANETS
  2. 10 DIM SP(10)
  3. 15 M=40 :E=380  :L=27:C=184
  4. 17 MR=30:ER=90:LR=25:CR=35
  5. 20 DIM P1(M),Q1(M),P2(E),Q2(E),P3(L),Q3(L),P4(C),Q4(C)
  6. 30 PRINT"[147]CALCULATING ORBITS   PLEASE WAIT!"
  7. 100 REM MACHINE CODE ROUTINE TO SERVICE SPRITES
  8. 110 REM IT UPDATES THEIR POSITION EVERY INTERRUPT
  9. 120 DATA165,47,133,251,165,48,133,252,160,0,177,251,201,83,208,8,200,177,251
  10. 130 DATA201,80,240,38,136,200,200,177,251,133,253,200,157,251,133,254,24,165,251
  11. 140 DATA101,253,133,251,165,252,101,254,133,252,197,50,208,212,165,251
  12. 150 DATA197,49,208,206,76,49,234
  13. 160 DATA152,24,105,6,168,162,0,200,200,24,177,251,41,1,240,1,56,102,255,200
  14. 170 DATA177,251  ,157,0,208,200,177,251,157,1,208,232,232,200,224,16,208,225
  15. 180 DATA165,255,141,  16,208
  16. 182 DATA162,0,200,200,177,251,240,29,169,0,157,4,212,177,251,157,4,212,169,0
  17. 184 DATA145,251,200,177,251,157,1,212,200,177,251,157,0,212,76,208,3
  18. 186 DATA200,200,200,138,24,105,7,170,224,21,208,209,76,49,234
  19. 190 REM INSERT WEDEE (CODE AT 988)
  20. 200 DATA120,169,64,141,20,3,169,3,141,21,3,88,96
  21. 210 FORJ=832 TO 1000
  22. 220 READA:POKEJ,A         :NEXTJ
  23. 230 SYS(988):A=2^31:B=2^8
  24. 240 REM SET UP SPRITE DEFINITIONS
  25. 250 FOR J=0TO8*64-1
  26. 260 READ X:POKE 58368+J,X
  27. 270 NEXT J
  28. 290 V=208*256
  29. 300 POKE V+32,0:POKE V+33,0 :REM SET SCREEN BLACK
  30. 310 FOR J=0 TO 7:POKE58360+J,144+J:NEXT J:REM SET SPRITE POINTERS
  31. 320 FOR J=57344 TO 58343:POKE J, 0:NEXTJ
  32. 330 POKE V+21,255
  33. 340 POKE V+24,136
  34. 350 POKE V+24,(PEEK(V+24) AND 15)OR 128
  35. 360 POKE 56578,PEEK(56578)OR 3
  36. 370 POKE 56576,PEEK(56576) AND 252
  37. 400 POKE V+42,7:POKE V+43,7:POKE V+44,7:POKE V+45,7 :REM SET SUN YELLOW
  38. 420 SP(3)=A+160*B+130
  39. 430 SP(4)=A+184*B+130
  40. 440 SP(5)=A+160*B+149
  41. 450 SP(6)=A+184*B+149
  42. 460 PRINT"[147]"
  43. 470 REM CALCULATE ORBITS
  44. 480 S=2*(null)/M :REM FIRST MERCURY
  45. 490 FOR J= 1 TO M
  46. 500 P1(J)=INT(1.2*MR*SIN(S*J)+184):Q1(J)=INT(MR*COS(S*J)+149)
  47. 510 NEXT J
  48. 520 S=2*(null)/E: REM NEXT EARTH
  49. 530 FOR J=1 TO E
  50. 540 P2(J)=INT(1.2*ER*SIN(S*J)+184):Q2(J)=INT(ER*COS(S*J)+149)
  51. 550 NEXT J
  52. 560 S=2*(null)/L: REM NEXT THE MOON
  53. 570 FOR J=1 TO L
  54. 580 P3(J)=INT(1.2*LR*SIN(S*J)):Q3(J)=INT(LR*COS(S*J))
  55. 590 NEXT J
  56. 600 REM NEXT COMET
  57. 610 S=2*(null)/C:SQ = SIN(0.8):CT=COS(0.8)
  58. 620 FOR J=1 TO C:REM FIRST CIRCULAR COORDINATES
  59. 630 P4(J)=2.5*CR*SIN(S*J):Q4(J)=1.2*CR*COS(S*J)
  60. 640 XD=220+INT(P4(J)*SQ+Q4(J)*CT)
  61. 650 YD=110+INT(Q4(J)*CT-P4(J)*SQ)
  62. 660 P4(J)=XD:Q4(J)=YD
  63. 670 NEXT J
  64. 705 JM=1:EM=1:LM=1:CM=1
  65. 710 FOR Q=1 TO 100000
  66. 720 SP(0)=A+B*P1(JM)+Q1(JM)
  67. 730 SP(7)=A+B*P4(CM)+Q4(CM)
  68. 740 SP(2)=A+B*P2(EM)+Q2(EM)
  69. 750 SP(1)=A+B*(P2(EM)+P3(LM))+(Q2(EM)+Q3(LM))
  70. 760 EM=EM+1:IFEM>ETHEN EM=1
  71. 770 LM=LM+1:IF LM>L THEN LM=1
  72. 780 JM=JM+1:IF JM>M THEN JM=1
  73. 790 CM=CM+1:IF CM>CTHEN CM=1
  74. 800 NEXT Q
  75. 1400 REM SPRITE DEFINITIONS
  76. 1410 REM SMALL PLANET
  77. 1420 DATA16,0,0,124,0,0,254,0,0,254,0,0,124,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  78. 1430 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  79. 1450 REM MIDDLE-SIZED PLANET
  80. 1460 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  81. 1470 DATA0,124,0,1,255,0,3,255,128,3,255,128,7,255,192,7,255,192,3,255,128
  82. 1480 DATA1,255,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  83. 1500 REM BIG PLANET
  84. 1510 DATA0,0,0,0,24,0,1,255,128,7,255,224,31,255,248,63,255,252
  85. 1520 DATA127,255,254,127,255,254,255,255,255,255,255,255,255,255,255,255,255,255
  86. 1530 DATA127,255,254,127,255,254,63,255,252,31,255,248,7,255,224,1,255,128
  87. 1540 DATA0,24,0,0,0,0,0,0,0,0
  88. 1550 REM SUN (1ST QUADRANT)
  89. 1560 DATA0,0,3,0,0,127,0,3,255,0,31,255,0,127,255,1,255,255,3,255,255,7,255,255
  90. 1570 DATA15,255,255,31,255,255,31,255,255,63,255,255,63,255,255,127,255,255
  91. 1580 DATA127,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  92. 1590 DATA0,0,0,0,0,0,0
  93. 1600 REM SUN (2ND QUADRANT)
  94. 1610 DATA192,0,0,254,0,0,255,192,0,255,248,0,255,254,0,255,255,128,255,255,192
  95. 1620 DATA255,255,224,255,255,240,255,255,248,255,255,248,255,255,252,255,255,252
  96. 1630 DATA255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255
  97. 1640 DATA0,0,0,0,0,0,0
  98. 1650 REM SUN (3RD QUADRANT)
  99. 1660 DATA255,255,255,255,255,255,255,255,255,255,255,255
  100. 1670 DATA127,255,255,127,255,255,63,255,255,63,255,255,31,255,255,31,255,255
  101. 1680 DATA15,255,255,7,255,255,3,255,255,1,255,255,0,127,255,0,31,255,0,3,255
  102. 1690 DATA0,0,127,0,0,3,0,0,0,0,0,0,0
  103. 1700 REM SUN (4TH QUADRANT)
  104. 1710 DATA255,255,255,255,255,255,255,255,255,255,255,255
  105. 1720 DATA255,255,254,255,255,254,255,255,252,255,255,252,255,255,248,255,255,248
  106. 1730 DATA255,255,240,255,255,224,255,255,192,255,255,128,255,254,0,255,248,0
  107. 1740 DATA255,192,0,254,0,0,192,0,0,0,0,0,0,0,0,0
  108. 1750 REM COMET
  109. 1760 DATA0,0,136,0,0,32,0,2,4,0,0,32,0,1,0,0,8,65,0,4,8,0,0,64,0,24,8
  110. 1770 DATA0,64,128,0,168,0,1,2,0,5,32,0,9,80,0,18,128,0
  111. 1780 DATA57,64,0,122,0,0,252,0,0,252,0,0,248,0,0,112,0,0,0
  112.